#ifndef ASYNC_HTTP_H
#define ASYNC_HTTP_H

#include "lwip/tcp.h"
#include "lwip/ip_addr.h"
#include <stdint.h>

/*
 * HTTP 响应回调类型：
 *   header：返回的 HTTP 响应头字符串（以 "\r\n\r\n" 结束）；
 *   body  ：返回的响应体（可能为空）；
 *   body_len：响应体长度；
 *   arg   ：用户传入的上下文指针。
 */
typedef void (*http_response_callback_t)(const char *header, const char *body, uint16_t body_len, void *arg);

/*
 * async_http_request 接口
 *
 * 参数说明：
 *   method        : "GET" 或 "POST"
 *   host          : 服务器地址（要求能用 ipaddr_aton() 转换，如 "192.168.1.100" 或 "www.example.com"）
 *   port          : 服务器端口（通常为 80）
 *   path          : 请求路径，如 "/index.html"
 *   extra_headers : 用户附加的额外 HTTP 头信息字符串，例如 "User-Agent: myclient/1.0\r\nAccept: *\/*\r\n"；
 *                   可为 NULL，不需要直接操作结构体
 *   body          : POST 请求的内容，对于 GET 可为 NULL
 *   callback      : 当 HTTP 响应接收完毕后调用的回调，返回响应头和响应体
 *   cb_arg        : 用户传入的上下文参数，原样传递给 callback
 *
 * 返回值：
 *   0 表示启动成功（后续由回调处理），非 0 表示启动失败。
 */
int async_http_request(const char *method, const char *host, uint16_t port,
                       const char *path, const char *extra_headers, const char *body,
                       http_response_callback_t callback, void *cb_arg);

#endif /* ASYNC_HTTP_H */
